package com.example.wanglong.myoneapplication.activity;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Fragment;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.JavascriptInterface;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

import com.example.wanglong.myoneapplication.R;
import com.example.wanglong.myoneapplication.reparentclass.ReToast;

@SuppressLint("NewApi")
public class MainTab02 extends Fragment
{

	private View mTwoView;
	private WebView homeTwoView;
	Handler handler = new Handler();

	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
	{
		//return inflater.inflate(R.layout.main_tab_02, container, false);
		mTwoView=inflater.inflate(R.layout.main_tab_02, container, false);

		initData(mTwoView);

		return mTwoView;
	}

	public void initData(View mTwoView){

		homeTwoView=(WebView) mTwoView.findViewById(R.id.hometwofragment);

		/*
				 * webSettings 保存着WebView中的状态信息。
				 * 当WebView第一次被创建时，webSetting中存储的都为默认值。
				 * WebSetting和WebView一一绑定的。
				 * 如果webView被销毁了，那么我们再次调用webSetting中的方法时，会抛出异常。
				 */
		WebSettings webSettings = homeTwoView.getSettings();
		//支持Javascript
		//允许在webview中执行JavaScript代码
		webSettings.setJavaScriptEnabled(true);
		//设置webview是否支持缩放
		webSettings.setSupportZoom(false);
		//优先使用缓存
		homeTwoView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
		//中文的支持:
		homeTwoView.getSettings().setDefaultTextEncodingName("GBK");

		homeTwoView.loadUrl("file:///android_asset/traveltrip/demo_8.html");

		class HarlanWebChromeClient extends WebChromeClient {

			/*此处覆盖的是javascript中的alert方法。
             *当网页需要弹出alert窗口时，会执行onJsAlert中的方法
             * 网页自身的alert方法不会被调用。
             */
			@Override
			public boolean onJsAlert(WebView view, String url, String message,
									 JsResult result) {
				Toast.makeText(getActivity(), message,
						Toast.LENGTH_LONG).show();
				Log.d("", "弹出了提示框");
						/*此处代码非常重要，若没有，android就不能与js继续进行交互了，
						 * 且第一次交互后，webview不再展示出来。
						 * result：A JsResult to confirm that the user hit enter.
						 * 我的理解是，confirm代表着此次交互执行完毕。只有执行完毕了，才可以进行下一次交互。
						 */
				result.confirm();
				return true;
			}

			/*此处覆盖的是javascript中的confirm方法。
             *当网页需要弹出confirm窗口时，会执行onJsConfirm中的方法
             * 网页自身的confirm方法不会被调用。
             */
			@Override
			public boolean onJsConfirm(WebView view, String url,
									   String message, JsResult result) {
				Toast.makeText(getActivity(), message,
						Toast.LENGTH_LONG).show();
				Log.d("", "弹出了确认框");
				result.confirm();
				return true;
			}

			/*此处覆盖的是javascript中的confirm方法。
             *当网页需要弹出confirm窗口时，会执行onJsConfirm中的方法
             * 网页自身的confirm方法不会被调用。
             */
			@Override
			public boolean onJsPrompt(WebView view, String url,
									  String message, String defaultValue,
									  JsPromptResult result) {
				Toast.makeText(getActivity(), message,
						Toast.LENGTH_LONG).show();
				Log.d("", "弹出了输入框");
				result.confirm();
				return true;
			}

			/*
             * 如果页面被强制关闭,弹窗提示：是否确定离开？
             * 点击确定 保存数据离开，点击取消，停留在当前页面
             */
			@Override
			public boolean onJsBeforeUnload(WebView view, String url,
											String message, JsResult result) {
				Toast.makeText(getActivity(), message,
						Toast.LENGTH_LONG).show();
				Log.d("", "弹出了离开确认框");
				result.confirm();
				return true;
			}
		}

		class HarlanWebViewClient extends WebViewClient{
			/*点击页面的某条链接进行跳转的话，会启动系统的默认浏览器进行加载，调出了我们本身的应用
             * 因此，要在shouldOverrideUrlLoading方法中
             */
			@Override
			public boolean shouldOverrideUrlLoading(WebView view,
													String url) {
				//使用当前的WebView加载页面
				view.loadUrl(url);
				return true ;
			}

			/*
             * 网页加载完毕(仅指主页，不包括图片)
             */
			@Override
			public void onPageStarted(WebView view, String url,
									  Bitmap favicon) {
				// TODO Auto-generated method stub
				super.onPageStarted(view, url, favicon);
			}

			/*
             * 网页加载完毕(仅指主页，不包括图片)
             */
			@Override
			public void onPageFinished(WebView view, String url) {
				// TODO Auto-generated method stub
				super.onPageFinished(view, url);
			}

			/*
             * 加载页面资源
             */
			@Override
			public void onLoadResource(WebView view, String url) {
				// TODO Auto-generated method stub
				super.onLoadResource(view, url);
			}

			/*
             * 错误提示
             */
			@Override
			public void onReceivedError(WebView view, int errorCode,
										String description, String failingUrl) {
				// TODO Auto-generated method stub
				super.onReceivedError(view, errorCode, description, failingUrl);
			}
		};

		homeTwoView.setWebChromeClient(new HarlanWebChromeClient());
		homeTwoView.setWebViewClient(new HarlanWebViewClient());


		homeTwoView.addJavascriptInterface(new Object() {
			@SuppressWarnings("unused")
			@JavascriptInterface
			public void caca() {
				handler.post(new Runnable() {
					@Override
					public void run() {
						ReToast.showToast("我是一号",getActivity());
					}
				});
			}
		}, "leon");



	}

}
